package com.example.mybatisplus.web.controller;

import com.example.mybatisplus.model.dto.StringDTO;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.mybatisplus.common.JsonResponse;
import com.example.mybatisplus.service.AdminService;
import com.example.mybatisplus.model.domain.Admin;

import java.util.HashMap;
import java.util.Map;


/**
 *
 *  前端控制器
 *
 *
 * @author lxp
 * @since 2021-06-17
 * @version v1.0
 */
@RestController
//控制器 应该是受ioc管理
public class AdminController {

    @Autowired
    private AdminService adminService;

    // 加上请求映射，让前端请求能否访问这个方法
    // 在springboot的约定配置中，springmvc会返回一个视图（页面）
    // 在前后端分离中，后端是没有视图的，所以不能返回视图，只能返回数据
    // 返回数据加注解
    @RequestMapping("xxx")
    public JsonResponse hh(){
        // 调用service处理逻辑
        System.out.println("hello mvc");
        return JsonResponse.success("hello");
    }
    // 接收参数




    // 前端传什么参数，后端根据参数名直接获取（get）
    // 仅适用于固定个数参数，且个数小于等于3
    @RequestMapping("yyy")
    public JsonResponse qq(String s,String x,Integer a,Long i){
        if(s==null){
            return JsonResponse.failure("字符串怎么能为null呢");
        }
        return JsonResponse.success(s.length());
    }

    // domain  entity  pojo 和数据表一一对应
    // DTO 数据传输层对象 专门用来当参数的
    // VO 数据展示对象  专门给用户看的

    // 前端传什么参数，后端根据参数名包装对象(get),假如这个对象不存在，创建！
    // 这个对象称之为DTO
    @GetMapping(value = "zzz")
    public Integer zzz(StringDTO dto){
        System.out.println(dto);
        return 1;
    }

    // 前端传递json数据，后端参数名包装对象获取，并给对象加转换注解（post请求专用）
    // 前后端分离开发过程中，post一定是传json数据
    @RequestMapping("aaa")
    public String aaa(@RequestBody StringDTO dto){
        return "111";
    }

    // 响应数据应该统一

    // restful风格
    // 增 post
    // 删 delete
    // 改 put
    // 查 get


    @GetMapping("/getAdminWithStudentById")
    public JsonResponse getAdminWithStudentById(Long id){
       Admin admin = adminService.getAdminWithStudentById(id);
       return JsonResponse.success(admin);
    }
}

